Micron Document
`:top
`!Rhino`! is a `F33f`_`[JavaScript engine`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=JavaScript_engine]`_`f to run the `F33f`_`[JavaScript`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=JavaScript]`_`f `F33f`_`[programming language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Programming_language]`_`f written fully in `F33f`_`[Java`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_(programming_language)]`_`f language and managed by the `F33f`_`[Mozilla Foundation`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Mozilla_Foundation]`_`f as `F33f`_`[free and open-source software`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Free_and_open-source_software]`_`f. It is separate from the `F33f`_`[SpiderMonkey`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=SpiderMonkey]`_`f engine, which is also developed by Mozilla, but written in the `F33f`_`[C++`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=C++]`_`f language and used in the `F33f`_`[Firefox`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Firefox]`_`f `F33f`_`[web browser`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Web_browser]`_`f.

>>Contents

• `F0af`_`[History`#history]`_`f
• `F0af`_`[Use`#use]`_`f
• `F0af`_`[See also`#see-also]`_`f
• `F0af`_`[References`#references]`_`f
• `F0af`_`[External links`#external-links]`_`f

-─

>>History

The Rhino project began at `F33f`_`[Netscape`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Netscape]`_`f in 1997, when they planned to produce a version of `F33f`_`[Netscape Navigator`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Netscape_Navigator]`_`f web browser written fully in Java, which needed an implementation of JavaScript written in Java. When Netscape stopped work on `*Javagator`*, as it was called, the Rhino project was finished as a JavaScript engine. Since then, a couple of major companies (including `F33f`_`[Sun Microsystems`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Sun_Microsystems]`_`f) have licensed Rhino for use in their products and paid Netscape to do so, allowing work to continue on it.

Originally, Rhino `F33f`_`[compiled`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Compiler]`_`f all JavaScript code to `F33f`_`[Java bytecode`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_bytecode]`_`f in generated `F33f`_`[Java class files`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_class_file]`_`f. This produced the best performance, often beating the `F33f`_`[C++`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=C++]`_`f implementation of JavaScript run with `F33f`_`[just-in-time compilation`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Just-in-time_compilation]`_`f (JIT), but suffered from two faults. First, `F33f`_`[compile time`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Compile_time]`_`f was long since generating `F33f`_`[bytecode`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Bytecode]`_`f and loading the generated `F33f`_`[classes`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Class_(computer_programming)]`_`f was a resource-intensive process. Also, the implementation effectively `F33f`_`[leaked memory`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Memory_leak]`_`f since most `F33f`_`[Java virtual machines`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_virtual_machine]`_`f (JVM) didn't `F33f`_`[collect`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Garbage_collection_(computer_science)]`_`f unused classes or the `F33f`_`[strings`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=String_(computer_science)]`_`f that are `F33f`_`[interned`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=String_interning]`_`f as a result of loading a class file. (This changed in later Java versions.)

As a result, in the fall of 1998, Rhino added an `F33f`_`[interpreted`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Interpreter_(computing)]`_`f mode. The classfile generation code was moved to an optional, `F33f`_`[dynamic loading`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Dynamic_loading]`_`f package. Compiling is faster and when scripts are no longer in use they can be collected like any other Java `F33f`_`[object`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Object_(computer_science)]`_`f.

Rhino was released to `F33f`_`[Mozilla Foundation`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Mozilla_Foundation]`_`f in April 1998. Originally Rhino classfile generation had been held back from release. However the licensors of Rhino agreed to release all of Rhino as `F33f`_`[free and open-source software`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Free_and_open-source_software]`_`f, including class file generation. Since its release to open source, Rhino has found a variety of uses and an increasing number of people have contributed to the code.`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f] The project gets its name from the animal on the cover of the JavaScript book from `F33f`_`[O'Reilly Media`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=O'Reilly_Media]`_`f.`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f] As of version 1.80 (January 2025), Rhino supports `F33f`_`[Java 11`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_version_history]`_`f and up, and supports many `F33f`_`[ECMAScript`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ECMAScript]`_`f ES6/ES2015 features.`:cite-ref-3[`F5bf`_`[3`#cite-note-3]`_`f]

>>Use

Rhino converts JavaScript scripts into `F33f`_`[classes`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Class_(computer_programming)]`_`f. Rhino works in both `F33f`_`[compiled`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Compiler]`_`f and `F33f`_`[interpreted`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Interpreter_(computing)]`_`f mode. It is intended to be used in `F33f`_`[client or server side`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Client–server_model]`_`f applications, hence there is no built-in support for the `F33f`_`[web browser`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Web_browser]`_`f objects that are commonly associated with JavaScript.

Rhino can be used as a `F33f`_`[debugger`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Debugger]`_`f by using the Rhino `F33f`_`[command-line interface`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Command-line_interface]`_`f or `F33f`_`[shell`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Shell_(computing)]`_`f. The JavaScript shell provides a simple way to run scripts in `F33f`_`[batch processing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Batch_processing]`_`f mode or in an `F33f`_`[Interactive computing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Interactive_computing]`_`f environment for `F33f`_`[exploratory programming`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Exploratory_programming]`_`f. It can be used in applications by embedding Rhino.

A slightly modified version of Rhino 1.6r2 comes `F33f`_`[bundled`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Product_bundling]`_`f with the `F33f`_`[Sun Microsystems`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Sun_Microsystems]`_`f release of `F33f`_`[Java SE`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_SE]`_`f version 6, which was released in December 2006. This makes it easier to integrate JavaScript as part of Java programs and to access Java resources from JavaScript. Other implementations of Java 6 may differ.

>>See also

• `F33f`_`[JavaScript engine`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=JavaScript_engine]`_`f
• `F33f`_`[List of ECMAScript engines`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=List_of_ECMAScript_engines]`_`f
• `F33f`_`[Nashorn (JavaScript engine)`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Nashorn_(JavaScript_engine)]`_`f – a now-deprecated successor to Rhino for the JVM, starting at Java 8

>>References

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f "Rhino History". `F33f`_`[Mozilla Foundation`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Mozilla_Foundation]`_`f. Archived from the original on 22 October 2020. Retrieved 2008-03-20.
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f O'Reilly's Javascript book, inspiration for the Rhino name
`:cite-note-3`!3.`! `F0af`_`[↑`#cite-ref-3]`_`f "Rhino ES2015 Support". Mozilla Foundation. Retrieved 2025-01-03.

>>External links

• Official website

`c`F0af`_`[↑ Back to top`#top]`_`f`a